iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0
Software Development

AI 慣老闆的 AI 學習歷程 - AI 時代的軟體工程的反思系列 第 4

AI 慣老闆的 AI學習日記 Day3 - Preview 沒問題,Production 大翻車—環境差異的教訓

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250807/20142509vwWuT6s07q.png

夜裡 11 點 45 分。

小可(狂按 F5):「Preview 畫面超漂亮,我總算可以下班,怎麼有了 AI 我工作更忙⋯」😮‍💨 

系統自動部署到 Staging,畫面正常。貝老闆信心滿滿地把網址貼給客戶。

5 分鐘後 — 客戶電話轟炸 📞:

客戶(崩潰):「還是上次錯誤的版本啊!整個版面跑掉,字體變『注音體』,行距像大峽谷!這是惡搞嗎?」

小可(錯愕):「蛤?我這邊 Preview 明明好好的啊!」

貝老闆(慌張):「你再重整看看?」

小可趕緊連到 Production,依舊是上次貝老闆改壞的版本。她滿頭問號,立刻撥給好威。

好威(電話另一端):「先別崩潰,應該只是部署或環境變數出問題。Preview、Staging、Production 的環境參數不一樣,預設字體、CDN、Node 版本、環境變數通通可能踩雷。你們每個環境都有先測過一次嗎?」

小可:「呃… 沒有,不是 Preview 測試 OK 就好了?」

好威:「這就是我上次跟你們貝哥哥說,要在 Cloudflare 設定灰度釋出(Gray Release)的原因。既然沒做,就只能半夜 debug,祝福你們囉。」😂


🔍 概念拆解

1️⃣ 環境一致性 Environment Parity

在本地或 Preview 看到的完美畫面,進到 Production 卻分崩離析,通常是「環境參數」不一致。舉凡 Node.js 版本差異、依賴庫的 minor 版本自動升級、CDN 路徑、資安限制、HTTP Header 設定,都可能造成前端樣式與行為出現不可預期的偏差。微小差異在開發環境被隱藏,但在真實流量、嚴格憑證或更高安全等級的 Production 就會爆炸。要避免踩雷,核心是將基礎映像檔、Runtime、第三方服務版本鎖定,用同一組 Docker image 或 immutable infrastructure,確保「開發、測試、正式」三環境跑在相同基底。

🤖 AI 協作 Tips:如果你完全搞不懂 docker-compose.nvmrc 是什麼,別急著背指令,先把困惑丟給 ChatGPT。

示範 Prompt:「我想確保開發、測試、正式三個環境用同一個 Node.js 版本與套件依賴,請一步一步教我該準備哪些檔案,並用我聽得懂的方式說明用途。」
AI 會先列出概念,再附上範例檔案(docker-compose.yml.nvmrc 等)與說明。接著追問:
「請幫我寫一段在 GitHub Actions 執行 node -v && npm ls --depth=0 的 Shell,確保 PR 階段比對版本差異。」
把這些內容貼進 Issue 或 PR 描述,讓 AI 充當你的資深 DevOps,機器就能在 PR 階段自動審稿,第一時間提醒版本落差,而不是等客戶打電話。

2️⃣ 多階段部署流程 Preview/Staging/Production

許多 SaaS 或 Git 平台都提供 Preview (PR build) 功能,讓開發者快速驗證畫面;接著 Staging 用來做整合測試與商業驗收;最後才是 Production 對外曝光。每一層環境都應有「自動化佈署 + 自動化測試 + 可觀測性」才能形成防護網。例如 PR Merge 前跑 Unit/E2E 測試,Staging 配 Feature Flag 做灰度釋出(Gray Release),先少量用戶試水溫,再逐步全量上線。

🤖 AI 協作 Tips:把「部署管線」的描述丟給 AI,請它直接產生 GitHub Actions 或 GitLab CI YAML,甚至要它列出 Feature Flag 欄位與 灰度比例擴張策略。若需求變動,只要改一行自然語言,AI 就能更新 YAML 並附上遷移指令,減少手動改 pipeline 踩地雷。

3️⃣ 回滾與可觀測性 Rollback & Observability

即使三環境做得再完整,Production 面對真實世界依然有無窮變因:突發流量、第三方 API 延遲、使用者行為超出預期。沒有即時指標與錯誤告警,你只會靠客戶電話才知道事態嚴重。Observability 包含 Log、Metric、Trace 三件套;再加上 Feature Flag 或藍綠部署機制,可在十秒內將問題版本回滾,縮短 MTTR (Mean Time To Recovery)。

🤖 AI 協作 Tips:把常見錯誤模式與門檻值交給 AI 建立 PromQL 或 NRQL 告警規則;並用 LLM 分析 trace 與 log,讓 AI 自動在 Slack 標註「可能的根因」及「建議回滾指令」。當深夜值班的只剩你與 AI,這些提示能救你一命。


📝 Takeaways

  1. 環境一致是底線,你必須告訴 AI:將 Runtime、依賴、系統設定封裝在同一份 Docker image,或使用 IaC 自動生成。同一份基底跑三環境,就能把「不同機器不同結果」的恥辱丟進垃圾桶。別忘了把檢查清單寫成 Prompt,讓 AI 在 CI 流程自動比對版本差異。

  2. 把失敗擋在 Production 之前,AI 就是流水線總管:建立 Preview → Staging → Production 的多階段流水線。用自然語言描述需求,讓 AI 生成或更新 CI/CD YAML、Cypress 腳本與 Feature Flag 設定。任何策略調整,一句 Prompt 即可完成,減少人工修改犯錯。

  3. 監控+快速回滾,AI 當你的深夜 SRE:Observability 讓你用 Dashboard 秒懂系統健康;Feature Flag 或藍綠部署讓你在出包時只需切換流量。將告警條件與回滾腳本交給 AI 維護,出現異常時由 AI 自動貼 Slack 提醒並附上 kubectl rollout undo 等指令,降低 MTTR,提高顧客信任。


今日提問

你們團隊目前在 Preview、Staging、Production 這三層有各自的自動化測試與監控嗎?如果沒有,先挑一個指標或 E2E 測試腳本開始布署吧!

📝 Prompt 小作業:寫一段 Prompt,請 ChatGPT 協助產生簡易的 Dockerfile 與 GitHub Actions,確保三環境使用相同映像檔,並在 PR 階段自動跑 Cypress E2E 測試,再請 AI 生成 灰度釋出策略與回滾腳本。


上一篇
AI 慣老闆的 AI學習日記 Day2 - 臨時改 Logo、改文案全靠 Prompt,結果版面崩壞!你聽過 Git 嗎?
下一篇
AI 慣老闆的 AI學習日記 Day4 - 資料怎麼不見? Replit DB 崩潰記與 Schema Migration 血淚
系列文
AI 慣老闆的 AI 學習歷程 - AI 時代的軟體工程的反思32
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言